package com.base;

import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;

import java.util.ArrayList;
import java.util.List;


public interface BaseService<REQ,RES> {
    /**
     * 分页转换
     *
     * @param iPage
     * @param T
     * @param
     * @return
     */
    default BasePageRes convertIpage(IPage iPage, RES T) {
        BasePageRes pageRes = new BasePageRes();
        pageRes.setPage(iPage.getCurrent());
        pageRes.setSize(iPage.getSize());
        pageRes.setTotalPage(iPage.getPages());
        pageRes.setTotalSize(iPage.getTotal());
        List<RES> list = new ArrayList();
        List records = iPage.getRecords();
        for (Object record : records) {
            try {
                T = (RES) T.getClass().newInstance();
                BeanUtil.copyProperties(record, T);
                list.add(T);
            } catch (Exception e) {
                e.printStackTrace();

            }

        }
        pageRes.setList(list);
        return pageRes;
    }

    /**
     * 增删改查统一处理
     *
     * @param req
     * @return
     */
    RES handle(REQ req);

    /**
     * 添加
     *
     * @param req
     * @return
     */
    RES add(REQ req);

    /**
     * 删除
     *
     * @param req
     * @return
     */
    RES del(REQ req);

    /**
     * 修改
     *
     * @param req
     * @return
     */
    RES update(REQ req);

    /**
     * @param req
     * @return
     */
    RES query(REQ req);

    int countByField(String column,Object value);



}
